The present application is directed to resource intensive computations which take a large amount of computing resources and time to complete. In such resource intensive computations, the time required is prohibitively long to be performed on a standard desktop PC.
High performance parallel computing methods have been developed to address this problem. Under these methods, the computation is expedited by running the computation in parallel over many processors at the same time rather than in a serial fashion on one processor. Grid computing is an example of such a method. Grid computing was designed for use with large scale, resource intensive scientific applications such as the SETI (Search for Extra Terrestrial Intelligence) programs. The concept was that computers (nodes) not currently doing tasks could be allocated a task as part of a larger job. Grid computing is a form of distributed computing whereby resources of many computers in a network are used at the same time, to solve a single problem. Grid systems are designed for collaborative sharing of resources. It may also be thought of as distributed and large-scale cluster computing. Grid computing is making big contributions to scientific research, helping scientists around the world to analyze and store massive amounts of data by sharing computing resources. One important concern for users and operators of such systems is how jobs should be queued. Thus for example in the distributed computing present in a grid computing environment, techniques are known for the allocation of tasks to computing resources. Conventionally such environments include an estimate of the likely time/resources required by a task. Thus for example in U.S. Patent Publication 2007/0106994 a determination of a completion time for a received request is obtained and from this determination resources are reserved. The method provides for analysis of a request which requires more than one resource and determines different times for each resource and reserves resources accordingly. Similarly in U.S. Patent Publication 2007/0078960 performance data is collected periodically from resources in a grid computing environment and stored in a content-addressable data repository from where analyses may be performed and the results communicated to a grid workload agent to improve grid management on a fine-grained basis. In another approach in U.S. Patent Publication 2008/0115143, as a job is being executed on a computer its percentage completion of tasks is monitored. From this an estimate of completion time for a job is made. Where this completion time does not meet the requirements for a job, the job is divided into tasks to be left on the computer and tasks to be transferred to another computer.
A newer development to grids is the concept of cloud computing. Cloud computing is the use of a third party service (Web Services) to perform computing needs. With cloud computing, companies can scale up to massive capacities in an instant without having to invest in new infrastructure. Cloud computing is of benefit to small and medium-sized businesses. Basically consumers use what they need on the Internet and pay only for what they use. Cloud computing eliminates the costs and complexity of buying, configuring, and managing the hardware and software needed to build and deploy internet delivered applications.
The present application is directed to a system in which resources are allocated in a cloud environment.
For the purposes of explanation, the application will now be described with reference to a service provided by the Assignee of the present application. This service provides a web accessible computation service that allows clients to log on to an account using a web browser and then to create a request combining data and analyses to be performed. Once a client has uploaded their data and analyses to be performed, the system utilizes high performance computing to perform the intensive computations quickly and efficiently.
Once the computations have been completed, the user can retrieve their data using their web browser. The service is continuously accessible to the users (24 hours a day, 365 days a year) through any web browser. It will be appreciated that with such a service, the loads on the system are unpredictable. For example, at one time there may be no compute resource required and at another time a large amount of compute resource may be required.
The traditional high performance computing model known heretofore required the purchase of a fixed resource (or setting up a computing system of a certain size). Requests can then be made to the system for computing resources. The requests can include requirements for a certain amount of compute resource and different requests can have different priorities. Once the compute resource of the total system is fully utilized then any additional requests for resources are queued until the resources to execute that request become available.
Cloud computing offers advantages over this fixed resource approach. In cloud computing, as will be familiar to those skilled in the art, computing resources may be requested from a cloud on a need basis rather than dedicating a machine to a particular service. It will be appreciated that this has a number of advantages including cost and also provides an environmental advantage by sharing computing resources to maximize efficiency rather than having computing resources lying idle for long periods of time consuming energy.
There are a number of companies making cloud computing services available on a commercial basis including for example, Amazon (EC2 service), IBM (IBM Blue Cloud) and Microsoft (Windows Azure). These services have made scalable computing resources available. New compute instances or compute nodes may be created and removed as required by a system, allowing a scalable system to be developed. Each of these services will have a system managing the cloud allocating and de-allocating computing instances in response to user requests. The present application is not directed at the management of the cloud.
Where a new compute instance is required in a cloud, typically, it may take 2-5 minutes to create. Additionally, there is a minimum amount of time that a computer instance may be requested for. This is referred to as the minimum request-able time (MRT). For example on Amazon EC2, this MRT is one hour.
In addition, there are different types of compute resources available in cloud computing services known heretofore. For example, the instance types that are currently available on Amazon EC2 may include the following which is given by way of example only and is not intended to be an exhaustive list:                Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform, $0.095/hr        Large Instance 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of instance storage, 64-bit platform, $0.38/hr        Extra Large Instance 15 GB of memory, 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform,        $0.76/hr        High-CPU Medium Instance 1.7 GB of memory, 5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each), 350 GB of instance storage, 32-bit platform, $0.19/hr        High-CPU Extra Large Instance 7 GB of memory, 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each), 1690 GB of instance storage, 64-bit 20 platform, $0.76/hr        
With the commercial cloud computing resources available, for a system which is small (relatively speaking) in comparison with the available cloud, there is a virtually limitless computing resource available to a customer requesting instances in the cloud. One of the problems which this application addresses is how to utilize this resource efficiently under an unpredictable load. It will be appreciated that this problem is entirely different to the aforementioned grid computing method where the grid resources are limited and with respect to the size of the tasks being performed. Similarly, it will be appreciated that the problem is not the same as managing the overall operation of the cloud.
One solution to the general problem might be to simply create a new computing instance each time a request for compute resource arises. However, it will be appreciated that this approach would be naive and inefficient since there may already be resources available within the allocated resources to handle the request.
There is therefore a need for system for managing resources obtained from a cloud computing environment which addresses at least some of the problems of the prior art.